package cn.ycl.system.biz.config.controller;

import cn.ycl.syslog.OperationEnum;
import cn.ycl.syslog.SystemLog;
import cn.ycl.utils.AjaxResult;
import cn.ycl.system.biz.config.entity.Config;
import cn.ycl.system.biz.config.service.ConfigService;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.stream.Collectors;
import javax.annotation.Resource;

/**
 * (Config)表控制层
 *
 * @author yuanchangliang
 * @since 2021-10-14 09:37:29
 */
@RestController
@RequestMapping("/config")
public class ConfigController {
    /**
     * 服务对象
     */
    @Resource
    private ConfigService configService;

    /**
     * 通过主键查询单条数据
     *
     * @param id 主键
     * @return 单条数据
     */
    @GetMapping("/selectOne")
    public Config selectOne(Long id) {
        return this.configService.queryById(id);
    }

    /**
     * 获取前10条数据
     *
     * @return 单条数据
     */
    @GetMapping("/selectAll")
    public List<Config> selectAll() {
        return this.configService.queryAllByLimit(0, 10);
    }

    /**
     * 获取启用的轮播图配置
     * @return
     */
    @GetMapping("/getActiveImageList")
    public AjaxResult getActiveImageList(){
        return AjaxResult.success(configService.getActiveImageList());
    }

    /**
     * 获取所有轮播图配置
     * @return
     */
    @GetMapping("/getAllImageList")
    public AjaxResult getAllImageList(){
        return AjaxResult.success(configService.getAllImageList());
    }

    /**
     * 获取所有轮播图配置
     * @return
     */
    @GetMapping("/getConfigPage")
    public AjaxResult getConfigPage(Config config){
        PageHelper.startPage(config.getPageNum(),config.getPageSize());
        List<Config> configPages = configService.getConfigPage(config);
        return AjaxResult.success(new PageInfo<>(configPages));
    }


    /**
     * 修改配置
     */
    @SystemLog(value = "修改轮播图配置", type = OperationEnum.CONFIG_MANAGE)
    @PostMapping("update")
    public AjaxResult update(Config config){
        List<Config> activeImageList = configService.getActiveImageList();
        List<Config> collect = activeImageList.stream().filter(image -> image.getId().equals(config.getId())).collect(Collectors.toList());
        if(config.getType() == 1 && activeImageList.size() >= 5 && collect.size() == 0 && config.getIsActive()){
            return AjaxResult.error("轮播图最多启用五个");
        }
        return AjaxResult.success(configService.update(config));
    }

}
